package pe.sepeveh.validator;

import java.util.ResourceBundle;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

@FacesValidator("validator.LoginValidator")
public class LoginValidator implements Validator{

    private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\." +
			"[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*" +
			"(\\.[A-Za-z]{2,})$";
 
    private Pattern pattern;
    private Matcher matcher;
    String msgTitulo = "";
    String msgTexto = "";
  
    
    public LoginValidator(){
		  pattern = Pattern.compile(EMAIL_PATTERN);
	}    
        
    
    
    @Override
    public void validate(FacesContext fc, UIComponent uic, Object value) throws ValidatorException {
        
            
        
//        String miobj1 = uic.getClientId();
//        String miobj2 = uic.getId();
        
        if(value.toString().trim().equals("")){
            
            setMensaje(uic.getId());
            
            FacesMessage msg = new FacesMessage(msgTitulo,
                                                msgTexto);
            msg.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(msg);
          
        }
//        else{
//            matcher = pattern.matcher(value.toString());
//            if(!matcher.matches()){
// 
//			FacesMessage msg = 
//				new FacesMessage("Error al validar el email", 
//						"Formato de email invalido.");
//			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
//			throw new ValidatorException(msg);
// 
//            }  
//        }	 
    }
    
    private void setMensaje(String objectID){
        
        FacesContext context = FacesContext.getCurrentInstance();
        ResourceBundle text = context.getApplication().evaluateExpressionGet(context, "#{inter}", ResourceBundle.class);
        
                
        switch (objectID){
            case "txtusername":                
                msgTitulo = text.getString("inicio.LoginValidator.blanco.titulo");
                msgTexto = text.getString("inicio.LoginValidator.blanco.texto");
                break;
            case "txtpassword":                
                msgTitulo = text.getString("inicio.ClaveValidator.blanco.titulo");
                msgTexto = text.getString("inicio.ClaveValidator.blanco.texto");
                break;
                
                
            default:
                msgTitulo = "";
                msgTexto = "";
        }
        
    }
}
